The present application relates generally to an improved data processing apparatus and method and more specifically to mechanisms for a file system interface for point-to-point and collective operations.
As computation moves to multi-core and distributed computing systems, the traditional way of performing computations, i.e. isolated in a single process on a single core, is increasingly anachronistic. Operating environments for modern “cloud” systems must handle two different, but increasingly similar, execution environments: multi-core central processing units (CPUs) and distributed computing systems based on commodity hardware. The challenge in these loosely couple, massively parallel computing systems is to coordinate workloads and provide communication to maximize the utilization of the hardware.
The inability to maximize the workload has lead to dataflow computing systems, both in the applications and in middleware. These computing systems, built on top of commodity systems, create distributed models for fault tolerance and the distribution of computation. However, since this middleware is not tightly integrated with their underlying systems, current development has moved to an entirely new world: new languages, new runtimes, and another level of abstraction on top of traditional computing systems. Taking a middleware approach, while powerful, both constrains and abandons many computing system design principles that make programs portable, usable and responsive.
Furthermore, existing tools cannot be easily transferred or used in conjunction with each other. These new computing systems require that you implement new modules in whatever specific language the middleware uses (typically C++ or Java), wrap sequential code, interact through runtime specific languages, or make use of language bindings. This has led to the constant reimplementation of well understood tools to work within these frameworks, which is not always practical for many large application bases. Constantly re-solving the same problems for each new run-time.